home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PRINTER / BCTEXT.ARJ / BCTEXT.BAS next >
BASIC Source File  |  1992-06-24  |  11KB  |  240 lines

  1. PRINT " BCTEXT - v1.00"
  2. ' Universal 3 of 9 barcode program using all text characters
  3. PRINT by; JAMES; R; BURKS; II; 6 / 24 / 1992
  4. PRINT "              ▌▐▐▌█▐▐▐▌▌▐▐▌█ ▌▌▌█▐▌▌▌█ ▌█▐▐▐ █▐▐▌▌█ ▌▌▐▐▌█▐"
  5. PRINT
  6. PRINT "Copyright (c) 1992  Delphis Data Systems"
  7. '
  8. 'capture command line input
  9. comlin$ = COMMAND$
  10. 'call sub to parse command line into TOCODE$ (the text to code 3 of 9)
  11. '                                    POSBC (the number of spaces to positon )
  12. '                                    PRTMOD$ (HP or IBM/EPSON FLAG )
  13. GOSUB parse
  14. '
  15. 'call barcode routine that produces BARCODE$
  16. GOSUB barcodeit
  17.  
  18. 'print barcode$ & ctlcodes
  19. IF posbc = 0 THEN posbc = 1
  20. LPRINT CHR$(13) + cpi10$
  21. LPRINT compres$ + STRING$(posbc, 32); lpi8$ + barcode$
  22. LPRINT STRING$(posbc, 32) + barcode$ + lpi6$
  23.  
  24. 'print text that was barcoded under barcode
  25. LPRINT STRING$(posbc, 32) + cpi10$ + bartext$
  26.  
  27. 'end of programm
  28. END
  29.  
  30.  
  31.  
  32. barcodeit:
  33.  
  34. 'this routine creates a 3 dimentional look up table
  35. '    the table is 44x3 (if converted to a file this would be 44
  36. '    records of 3 fields each).
  37. '         Element 1 = the ASCII Character that the CODE represents
  38. '         Element 2 = THE 3 of 9 image using text BLOCK GRAPHICS
  39. '                        bb=SOLID BLACK CHAR.                    █
  40. '                        ww=SOLID white CHAR.
  41. '                        bw=First-half white Sec-half black char.▐
  42. '                        bw=First-half black Sec-half white char.▌
  43. '         Element 3 = THE 3 of 9 image shifted 1/2 char left
  44. '                     the first narrow black line is cut off and
  45. '                     a narrow white line added to the end.
  46.  
  47. ' this is neccessary to generate the narrow white inter character gap
  48. '    required for 3 of 9 coding.
  49. '    a WB (▐) character is added after all element 2 codes (except the
  50. '    stop character), and this forms the first black bar of the next
  51. '    character (which will be an element 3 code). The element 3 code has
  52. '    an extra narrow white bar on the end which is the inter character gap
  53. '    between the next character (back to element 2 codes).
  54. ' this alternating pattern is then repeted for the whole code sequence
  55. '    with ODD position characters receiving an addional WB added to them
  56. '
  57. ' ie:              ▌▐▐▌█▐▐▐▌▌▐▐▌█ ▌▌▌█▐▌▌▌█ ▌█▐▐▐ █▐▐▌▌█ ▌▌▐▐▌█▐
  58. '                  *      B     U     R      K     S      *
  59. ' table element    2      3    2     3     2     3     2
  60. '                 = wb (▐)  character inserted for gap
  61. '
  62. '
  63. '
  64. '
  65. '
  66. '
  67. '
  68. 'if the table has already been initialized do not re-initializeit
  69. IF bb$ = CHR$(219) AND ww$ = CHR$(32) THEN GOTO noinitbc
  70. '
  71. '
  72. '   initlize table
  73. bb$ = CHR$(219): ww$ = CHR$(32): bw$ = CHR$(221): WB$ = CHR$(222)
  74. DIM bc$(45, 3)
  75. bc$(1, 1) = "1":  bc$(1, 2) = bb$ + WB$ + ww$ + bw$ + bw$ + bb$
  76.                   bc$(1, 3) = bw$ + bw$ + WB$ + WB$ + WB$ + bw$
  77. bc$(2, 1) = "2":  bc$(2, 2) = bw$ + bb$ + ww$ + bw$ + bw$ + bb$
  78.                   bc$(2, 3) = WB$ + bw$ + WB$ + WB$ + WB$ + bw$
  79. bc$(3, 1) = "3":  bc$(3, 2) = bb$ + WB$ + bw$ + WB$ + WB$ + WB$
  80.                   bc$(3, 3) = bw$ + bb$ + ww$ + bw$ + bw$ + bw$
  81. bc$(4, 1) = "4":  bc$(4, 2) = bw$ + bw$ + WB$ + bw$ + bw$ + bb$
  82.                   bc$(4, 3) = WB$ + ww$ + bb$ + WB$ + WB$ + bw$
  83. bc$(5, 1) = "5":  bc$(5, 2) = bb$ + WB$ + ww$ + bb$ + WB$ + WB$
  84.                   bc$(5, 3) = bw$ + bw$ + WB$ + bw$ + bw$ + bw$
  85. bc$(6, 1) = "6":  bc$(6, 2) = bw$ + bb$ + ww$ + bb$ + WB$ + WB$
  86.                   bc$(6, 3) = WB$ + bw$ + WB$ + bw$ + bw$ + bw$
  87. bc$(7, 1) = "7":  bc$(7, 2) = bw$ + bw$ + WB$ + WB$ + bw$ + bb$
  88.                   bc$(7, 3) = WB$ + ww$ + bw$ + bb$ + WB$ + bw$
  89. bc$(8, 1) = "8":  bc$(8, 2) = bb$ + WB$ + ww$ + bw$ + bb$ + WB$
  90.                   bc$(8, 3) = bw$ + bw$ + WB$ + WB$ + bw$ + bw$
  91. bc$(9, 1) = "9":  bc$(9, 2) = bw$ + bb$ + ww$ + bw$ + bb$ + WB$
  92.                   bc$(9, 3) = WB$ + bw$ + WB$ + WB$ + bw$ + bw$
  93. bc$(10, 1) = "0": bc$(10, 2) = bw$ + bw$ + WB$ + bw$ + bb$ + WB$
  94.                   bc$(10, 3) = WB$ + ww$ + bb$ + WB$ + bw$ + bw$
  95. bc$(11, 1) = "A": bc$(11, 2) = bb$ + WB$ + WB$ + ww$ + bw$ + bb$
  96.                   bc$(11, 3) = bw$ + bw$ + bw$ + WB$ + WB$ + bw$
  97. bc$(12, 1) = "B": bc$(12, 2) = bw$ + bb$ + WB$ + ww$ + bw$ + bb$
  98.                   bc$(12, 3) = WB$ + bw$ + bw$ + WB$ + WB$ + bw$
  99. bc$(13, 1) = "C": bc$(13, 2) = bb$ + WB$ + bw$ + bw$ + WB$ + WB$
  100.                   bc$(13, 3) = bw$ + bb$ + WB$ + ww$ + bw$ + bw$
  101. bc$(14, 1) = "D": bc$(14, 2) = bw$ + bw$ + bb$ + ww$ + bw$ + bb$
  102.                   bc$(14, 3) = WB$ + WB$ + bw$ + WB$ + WB$ + bw$
  103. bc$(15, 1) = "E": bc$(15, 2) = bb$ + WB$ + WB$ + bw$ + WB$ + WB$
  104.                   bc$(15, 3) = bw$ + bw$ + bb$ + ww$ + bw$ + bw$
  105. bc$(16, 1) = "F": bc$(16, 2) = bw$ + bb$ + WB$ + bw$ + WB$ + WB$
  106.                   bc$(16, 3) = WB$ + bw$ + bb$ + ww$ + bw$ + bw$
  107. bc$(17, 1) = "G": bc$(17, 2) = bw$ + bw$ + bw$ + ww$ + bw$ + bb$
  108.                   bc$(17, 3) = WB$ + WB$ + ww$ + WB$ + WB$ + bw$
  109. bc$(18, 1) = "H": bc$(18, 2) = bb$ + WB$ + WB$ + ww$ + bb$ + WB$
  110.                   bc$(18, 3) = bw$ + bw$ + bw$ + WB$ + bw$ + bw$
  111. bc$(19, 1) = "I": bc$(19, 2) = bw$ + bb$ + WB$ + ww$ + bb$ + WB$
  112.                   bc$(19, 3) = WB$ + bw$ + bw$ + WB$ + bw$ + bw$
  113. bc$(20, 1) = "J": bc$(20, 2) = bw$ + bw$ + bb$ + ww$ + bb$ + WB$
  114.                   bc$(20, 3) = WB$ + WB$ + bw$ + WB$ + bw$ + bw$
  115. bc$(21, 1) = "K": bc$(21, 2) = bb$ + WB$ + WB$ + WB$ + ww$ + bb$
  116.                   bc$(21, 3) = bw$ + bw$ + bw$ + bw$ + WB$ + bw$
  117. bc$(22, 1) = "L": bc$(22, 2) = bw$ + bb$ + WB$ + WB$ + ww$ + bb$
  118.                   bc$(22, 3) = WB$ + bw$ + bw$ + bw$ + WB$ + bw$
  119. bc$(23, 1) = "M": bc$(23, 2) = bb$ + WB$ + WB$ + bw$ + bw$ + WB$
  120.                   bc$(23, 3) = bw$ + bw$ + bb$ + WB$ + ww$ + bw$
  121. bc$(24, 1) = "N": bc$(24, 2) = bw$ + bw$ + bw$ + WB$ + ww$ + bb$
  122.                   bc$(24, 3) = WB$ + WB$ + ww$ + bw$ + WB$ + bw$
  123. bc$(25, 1) = "O": bc$(25, 2) = bb$ + WB$ + bb$ + bw$ + bw$ + WB$
  124.                   bc$(25, 3) = bw$ + bb$ + bb$ + WB$ + ww$ + bw$
  125. bc$(26, 1) = "P": bc$(26, 2) = bw$ + bb$ + bb$ + bw$ + bw$ + WB$
  126.                   bc$(26, 3) = WB$ + bb$ + bb$ + WB$ + ww$ + bw$
  127. bc$(27, 1) = "Q": bc$(27, 2) = bw$ + bw$ + bw$ + bb$ + ww$ + bb$
  128.                   bc$(27, 3) = WB$ + WB$ + WB$ + bw$ + WB$ + bw$
  129. bc$(28, 1) = "R": bc$(28, 2) = bb$ + WB$ + WB$ + WB$ + bw$ + WB$
  130.                   bc$(28, 3) = bw$ + bw$ + bw$ + bb$ + ww$ + bw$
  131. bc$(29, 1) = "S": bc$(29, 2) = bw$ + bb$ + WB$ + WB$ + bw$ + WB$
  132.                   bc$(29, 3) = WB$ + bw$ + bw$ + bb$ + ww$ + bw$
  133. bc$(30, 1) = "T": bc$(30, 2) = bw$ + bw$ + bb$ + WB$ + bw$ + WB$
  134.                   bc$(30, 3) = WB$ + WB$ + bw$ + bb$ + ww$ + bw$
  135. bc$(31, 1) = "U": bc$(31, 2) = bb$ + ww$ + bw$ + bw$ + bw$ + bb$
  136.                   bc$(31, 3) = bw$ + WB$ + WB$ + WB$ + WB$ + bw$
  137. bc$(32, 1) = "V": bc$(32, 2) = bw$ + WB$ + WB$ + bw$ + bw$ + bb$
  138.                   bc$(32, 3) = ww$ + bw$ + bb$ + WB$ + WB$ + bw$
  139. bc$(33, 1) = "W": bc$(33, 2) = bb$ + ww$ + bb$ + WB$ + WB$ + WB$
  140.                   bc$(33, 3) = bw$ + WB$ + bw$ + bw$ + bw$ + bw$
  141. bc$(34, 1) = "X": bc$(34, 2) = bw$ + WB$ + WB$ + bw$ + bw$ + bb$
  142.                   bc$(34, 3) = ww$ + bw$ + bb$ + WB$ + WB$ + bw$
  143. bc$(35, 1) = "Y": bc$(35, 2) = bb$ + ww$ + bw$ + bb$ + WB$ + WB$
  144.                   bc$(35, 3) = bw$ + WB$ + WB$ + bw$ + bw$ + bw$
  145. bc$(36, 1) = "Z": bc$(36, 2) = bw$ + WB$ + bw$ + bb$ + WB$ + WB$
  146.                   bc$(36, 3) = ww$ + bw$ + WB$ + bw$ + bw$ + bw$
  147. bc$(37, 1) = "-": bc$(37, 2) = bw$ + WB$ + WB$ + WB$ + bw$ + bb$
  148.                   bc$(37, 3) = ww$ + bw$ + bw$ + bb$ + WB$ + bw$
  149. bc$(38, 1) = ".": bc$(38, 2) = bb$ + ww$ + bw$ + bw$ + bb$ + WB$
  150.                   bc$(38, 3) = bw$ + WB$ + WB$ + WB$ + bw$ + bw$
  151. bc$(39, 1) = " ": bc$(39, 2) = bw$ + WB$ + bw$ + bw$ + bb$ + WB$
  152.                   bc$(39, 3) = ww$ + bb$ + WB$ + WB$ + bw$ + bw$
  153. bc$(40, 1) = "*": bc$(40, 2) = bw$ + WB$ + WB$ + bw$ + bb$ + WB$
  154.                   bc$(40, 3) = ww$ + bw$ + bb$ + WB$ + bw$ + bw$
  155. bc$(41, 1) = "$": bc$(41, 2) = bw$ + WB$ + ww$ + bw$ + WB$ + WB$
  156.                   bc$(41, 3) = ww$ + bw$ + WB$ + ww$ + bw$ + bw$
  157. bc$(42, 1) = "/": bc$(42, 2) = bw$ + WB$ + ww$ + bw$ + bw$ + WB$
  158.                   bc$(42, 3) = ww$ + bw$ + WB$ + WB$ + ww$ + bw$
  159. bc$(43, 1) = "+": bc$(43, 2) = bw$ + WB$ + WB$ + ww$ + bw$ + WB$
  160.                   bc$(43, 3) = ww$ + bw$ + bw$ + WB$ + ww$ + bw$
  161. bc$(44, 1) = "%": bc$(44, 2) = bw$ + bw$ + WB$ + ww$ + bw$ + WB$
  162.                   bc$(44, 3) = WB$ + ww$ + bw$ + WB$ + ww$ + bw$
  163. noinitbc:
  164. '
  165. '
  166. '
  167. barcode$ = ""
  168. '
  169. '      add start and stop characters to text to barcode
  170. bartext$ = "*" + tocode$ + "*"
  171. '
  172. '
  173. '     For each character get the barcode equiv.
  174. Lp = LEN(bartext$)
  175. FOR x = 1 TO Lp
  176. '
  177. '            look up source character from table
  178.     FOR y = 1 TO 44
  179.         IF MID$(bartext$, x, 1) = bc$(y, 1) THEN GOSUB addbc
  180.     NEXT y
  181. '
  182. '       if character is in an odd position and, not the stop character,
  183. '                         add a interrecord gap
  184.     IF x <> Lp AND x / 2 <> INT(x / 2) THEN barcode$ = barcode$ + WB$
  185. NEXT x
  186. RETURN
  187.  
  188.  
  189. addbc:
  190. 'determine if element 2 or element 3 string is to be used
  191. '
  192. IF x / 2 <> INT(x / 2) THEN barcode$ = barcode$ + bc$(y, 2)
  193. IF x / 2 = INT(x / 2) THEN barcode$ = barcode$ + bc$(y, 3)
  194. RETURN
  195.  
  196. parse:
  197. '
  198. '             format command line input into variables.
  199. '
  200. posbc = 0
  201. qmflag = 0
  202. FOR cllen = 1 TO LEN(comlin$)
  203.     IF MID$(comlin$, cllen, 1) = CHR$(34) THEN qmflag = qmflag + 1
  204.     IF qmflag = 1 AND MID$(comlin$, cllen, 1) <> CHR$(34) THEN tocode$ = tocode$ + MID$(comlin$, cllen, 1)
  205.     IF MID$(comlin$, cllen, 1) = "/" THEN op$ = MID$(comlin$, cllen + 1, 2): GOSUB chkop1: op$ = "": op = 0
  206.     
  207. NEXT cllen
  208.  
  209. IF qmflag < 2 THEN GOTO helplst
  210. IF LEN(prtmod$) > 2 THEN prtmod$ = MID$(prtmod$, 1, 2)
  211. IF prtmod$ = "HP" OR prtmod$ = "hp" THEN
  212.         compres$ = CHR$(27) + "(s30H"
  213.         cpi10$ = CHR$(27) + "(10U" + CHR$(27) + "(s10H"
  214.         lpi8$ = CHR$(27) + "&l8D"
  215.         lpi6$ = CHR$(27) + "&l6D"
  216.         ELSE
  217.         compres$ = CHR$(27) + CHR$(15)
  218.         cpi10$ = CHR$(18)
  219.         lpi8$ = CHR$(27) + "0"
  220.         lpi6$ = CHR$(27) + "2"
  221. END IF
  222. RETURN
  223.  
  224. chkop1:
  225. IF op$ <> "HP" AND op$ <> "hp" AND posbc = 0 THEN posbc = VAL(op$)
  226. IF op$ = "hp" OR op$ = "HP" THEN prtmod$ = "HP"
  227. RETURN
  228.  
  229. helplst:
  230. PRINT
  231. PRINT " USAGE = BCTEXT "; CHR$(34); "text to be coded"; CHR$(34); " [/HP] [/n]"
  232. PRINT
  233. PRINT " text to be coded - must be enclosed in "; CHR$(34)
  234. PRINT " /HP - parm is optional, it sets the spaceing ctl codes for a hp laserjet"
  235. PRINT "       default is for IBM/EPSON MODE,  EPSON must be using GRAHPICS 1"
  236. PRINT "       or GRAPHICS 2 character set."
  237. PRINT " /n - parm indicates the number of characters to the right to position BC"
  238. END
  239.  
  240.